--[[
Author: GGELUA
Date: 2023-11-01 12:30:35
Last Modified by: GGELUA
Last Modified time: 2023-11-01 16:14:43
--]]
--[[
Author: GGELUA
Date: 2023-05-23 20:33:27
Last Modified by: GGELUA
Last Modified time: 2023-06-11 12:53:05
--]]
local UI模型格子 = class("UI模型格子")
local ggf = require("GGE.函数")
function UI模型格子:初始化(当前)
  self.动画 = {}
  self.x, self.y = 0, 0
  self.当前=当前
end
function UI模型格子:置数据(数据, 类型, x, y, 附加,方向)
  self.动画 = {}
  self.数据=数据
  local 加入数据 = ggf.insert(self.动画)
  if not 数据 then
    self.x, self.y = 0, 0
    return
  end
  if 方向 == nil then 方向 = 5 end
  if 数据.商城类型  then
    self.确定格子=取白色背景(0,0,410,172,true):拉伸(200,200):到精灵()
    if "祥瑞套装" == 类型 then
      local nsf = require('SDL.图像')(200,200)
            if nsf:渲染开始() then
             取灰色背景(0,0,410,172,true):拉伸(200,200):显示(0,0)
             字体18:置颜色(__取颜色('白色'))
             字体18:取图像(数据.名称):显示(80,165)
             字体18:取图像(数据.价格):显示(80,180)
                nsf:渲染结束()
            end
       self.模型 = nsf:到精灵()
      local lssj =取祥瑞模型(多开数据[多开数据.当前].角色信息.模型,数据.名称)
       tcp = __res:取动画2(__res:取地址('shape/mx/zj/',lssj[1])):置方向(方向):置循环(true)
       加入数据(tcp)
    end
  elseif "角色" == 类型 then
    local lssj
    local 允许武器=true
    
     if 数据.锦衣 and 数据.锦衣[2]  then
      local 锦衣名称 = 数据.锦衣[2].名称
      if type(数据.锦衣[2]) == "string" then
          锦衣名称 = 数据.锦衣[2]
      end
      允许武器 = false
      lssj =取祥瑞模型(数据.模型,锦衣名称)
    elseif 数据.锦衣 and 数据.锦衣[1] then
      local 锦衣名称 = 数据.锦衣[1].名称
      if type(数据.锦衣[1]) == "string" then
          锦衣名称 = 数据.锦衣[1]
      end
      local 武器类型 = nil
      if 数据.装备 and 数据.装备[3] then 武器类型 = 多开数据[self.当前].__主控.取武器子类(数据.装备[3].子类) end
      lssj = 取模型(数据.模型,nil,nil,锦衣名称,武器类型)
    end
    if 允许武器 and 数据.装备 and 数据.装备[4] and 数据.装备[4].名称 and 数据.装备[4].子类==911 then--
      local m = 多开数据[self.当前].__主控:取武器附加名称(数据.装备[4].子类, 数据.装备[4].等级, 数据.装备[4].名称)
      lssj = 取模型(m .. "_" .. 数据.模型)
       tcp5 = __res:取动画2(__res:取地址('shape/mx/', lssj[1])):置方向(5):置循环(true)
       if 数据.装备[4].名称.染色组 and 数据.装备[4].名称.染色方案 and 数据.装备[4].名称.染色方案 ~= 0 and 数据.装备[4].名称.染色组[1] ~= nil and 数据.装备[4].名称.染色组[1] ~= 0 and 数据.装备[4].名称.染色组[2] ~= 0 then
         __res:置染色(tcp5, 数据.装备[4].名称.染色方案, 数据.装备[4].名称.染色组[1], 数据.装备[4].名称.染色组[2])
       end
       加入数据(tcp5)
     end
    if 数据.装备 and 数据.装备[3] then
      local m = 多开数据[self.当前].__主控.取武器子类(数据.装备[3].子类)
      if 数据.锦衣 and 数据.锦衣[2]  then
        tcp = __res:取动画2(__res:取地址('shape/mx/zj/',lssj[1])):置方向(方向):置循环(true)
      elseif 数据.锦衣 and 数据.锦衣[1] then
        tcp = __res:取动画2(__res:取地址('shape/mx/zj/',lssj[1])):置方向(方向):置循环(true)
      else
        lssj = 取模型(数据.模型, m)
        tcp = __res:取动画2(__res:取地址('shape/mx/', lssj[1])):置方向(方向):置循环(true)
        if 数据.染色组 and 数据.染色方案 and 数据.染色方案 ~= 0 and 数据.染色组[1] ~= nil then
          __res:置染色(tcp, 数据.染色方案, 数据.染色组[1], 数据.染色组[2],数据.染色组[3])
        end
      end
      加入数据(tcp)
      if 允许武器 then
      if 数据.装备[3].级别限制 then 数据.装备[3].等级 = 数据.装备[3].级别限制 end
      local m = 多开数据[self.当前].__主控:取武器附加名称(数据.装备[3].子类, 数据.装备[3].等级, 数据.装备[3].名称)
      lssj = 取模型(m .. "_" .. 数据.模型)
      tcp1 = __res:取动画2(__res:取地址('shape/mx/', lssj[1])):置方向(方向):置循环(true)
      if 数据.装备[3].染色组 and 数据.装备[3].染色方案 and 数据.装备[3].染色方案 ~= 0 and 数据.装备[3].染色组[1] ~= nil then
        __res:置染色(tcp1, 数据.装备[3].染色方案, 数据.装备[3].染色组[1], 数据.装备[3].染色组[2])
      end
      加入数据(tcp1)
      end
    else
      if 数据.锦衣 and 数据.锦衣[2]  then
        tcp = __res:取动画2(__res:取地址('shape/mx/zj/',lssj[1])):置方向(方向):置循环(true)
      elseif 数据.锦衣 and 数据.锦衣[1] then
        tcp = __res:取动画2(__res:取地址('shape/mx/zj/',lssj[1])):置方向(方向):置循环(true)
      else
        lssj = 取模型(数据.模型)
        tcp = __res:取动画2(__res:取地址('shape/mx/', lssj[1])):置方向(方向):置循环(true)
        if 数据.染色组 and 数据.染色方案 and 数据.染色方案 ~= 0 and 数据.染色组[1] ~= nil then
          __res:置染色(tcp, 数据.染色方案, 数据.染色组[1], 数据.染色组[2],数据.染色组[3])
        end
      end
      
      加入数据(tcp)
    end
  elseif "召唤兽" == 类型 or "子女" == 类型 then
    local 模型 = 数据.模型
    local lssj = 取战斗模型(模型)
    if 数据.进阶 and 取可否进阶(模型) then
      模型 = "进阶"..模型
      lssj = 取战斗模型(模型)
    end
    tcp = __res:取动画2(__res:取地址('shape/mx/', lssj[6])):置方向(方向):置循环(true)
    if 数据.染色组 and 数据.染色方案 and 数据.染色方案 ~= 0 and 数据.染色组[1] ~= nil then
      __res:置染色(tcp, 数据.染色方案, 数据.染色组[1], 数据.染色组[2])
    elseif 数据.变异 and 染色信息[模型] then
      __res:置染色(tcp, 染色信息[模型].id, 染色信息[模型].方案[1], 染色信息[模型].方案[2], 染色信息[模型].方案[3])

    end
    加入数据(tcp)
    lssj = 取战斗模型(模型 .. "_身体")
    if lssj[6] then
      加入数据(__res:取动画(__res:取地址("shape/mx/", lssj[6])):取动画(1):置当前帧(1):播放(true))
    end
    if 数据.饰品 then
      lssj = 取战斗模型(模型 .. "_饰品")
      if lssj[6] then
        加入数据(__res:取动画(__res:取地址("shape/mx/", lssj[6])):取动画(1):置当前帧(1):播放(true))
      end
    else
      lssj = 取战斗模型(模型 .. "_装饰")
      if lssj[6] then
        加入数据(__res:取动画(__res:取地址("shape/mx/", lssj[6])):取动画(1):置当前帧(1):播放(true))
      end
    end
  elseif "坐骑" == 类型 then
    local lssj = 坐骑库(附加, 数据.模型, 数据.饰品 or "空", 数据.饰品2 or "空")
    if lssj then
      加入数据(__res:取动画(__res:取地址("shape/mx/", lssj.坐骑站立)):取动画(1):置当前帧(1):播放(true))
      if 数据.饰品 then
        加入数据(__res:取动画(__res:取地址("shape/mx/", lssj.坐骑饰品站立)):取动画(1):置当前帧(1):播放(true))
      end
    else
      local lssj = 取站立坐骑(数据.模型)
      加入数据(__res:取动画(__res:取地址("shape/mx/", lssj[1])):取动画(1):置当前帧(1):播放(true))
    end
  elseif "宠物" == 类型 then
    local lssj = 取模型(数据)
    加入数据(__res:取动画(__res:取地址("shape/mx/", lssj[1])):取动画(5):置当前帧(1):播放(true))
  end
  self.x, self.y = x, y
end
function UI模型格子:清空()
  self.动画 = {}
end
function UI模型格子:更新(dt)
  for k, v in pairs(self.动画) do
    v:更新(dt)
  end
end
function UI模型格子:显示(x, y)
  if self.模型 then
    self.模型:显示(x , y )
  end
  if self.数据 and self.数据.确定 then
    self.确定格子:显示(x , y )
  end
  多开数据[self.当前].__主控.影子:显示(x + self.x, y + self.y)
  for k, v in pairs(self.动画) do
    v:显示(x + self.x, y + self.y)
  end
end
return UI模型格子
